<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>async函数练习</title>
</head>
<body>
<!--
  async函数(源自ES2017)
  概念： 真正意义上去解决异步回调的问题，同步流程表达异步操作
  本质： Generator的语法糖
  语法：
      async function foo(){
        await 异步操作;
        await 异步操作；
      }
  特点：
    1、不需要像Generator去调用next方法，遇到await等待，当前的异步操作完成就往下执行
    2、返回的总是Promise对象，可以用then方法进行下一步操作
    3、async取代Generator函数的星号*，await取代Generator的yield
    4、语意上更为明确，使用简单，经临床验证，暂时没有任何副作用

-->
<script type="text/javascript" src="./js/jquery-1.10.1.min.js"></script>
<script src="./js/axios.min.js"></script>
<script type="text/javascript">
    // 案例演示
 //     function sendXml(url) {
 //      return new Promise((resolve, reject) => {
 //        $.ajax({
 //          url,
 //          type: 'GET',
 //          success:function(data){
	// 		  resolve(data)
	// 	  },
	// 	  error:function(data){
	// 		  reject(data)
	// 	  }
 //        })
 //      })
 //    }
	// async function getNews(){
	// 	const news=await sendXml('http://localhost:3000/news?id=2');
	// 	console.log(news)
	// 	const comments=await sendXml('http://localhost:3000'+news.commentsUrl);
	// 	console.log(comments)
	// }
	// getNews()
	
	
	
	function ajax(url){
		return new Promise((resolve,reject)=>{
			axios.get(url).then(res=>{
				resolve(res.data);
			}).catch(err=>{
				reject(err)
			})
		})
	}
	async function steps(){
		const users=await ajax('https://api.github.com/users');
		console.log(users);
		const firsUser=await ajax('https://api.github.com/users/'+users[0].login);
		console.log(firsUser);
		const followers=await ajax(firsUser.followers_url);
		console.log(followers);
	}
	steps()
</script>

</body>
</html>